/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.beans;

/**
 *
 * @author egberto
 */
public class Pessoa implements Comparable {
    
    private long rg;
    private String nome;
    private String sobrenome;
    private String dataNasc;

    public Pessoa(long rg, String nome, String sobrenome, String dataNasc) {
        this.rg = rg;
        this.nome = nome;
        this.sobrenome = sobrenome;
        this.dataNasc = dataNasc;
    }   

    
    @Override
    public boolean equals(Object obj) {
        if (obj instanceof Pessoa) {
           Pessoa pessoa = (Pessoa) obj;
           if(this.getRg() == pessoa.getRg()
                   && this.getNome().equalsIgnoreCase(pessoa.getNome())
                   && this.getSobrenome().equalsIgnoreCase(pessoa.getSobrenome())){
               return true;
           } else{
               return false;
           }
        }else{
            return false;
        }
        
    }

    @Override
    public String toString() {
        return this.nome + " " + this.sobrenome + " RG: " + this.rg ;
    }
    
   
    @Override
    public int hashCode(){
        return (int) rg + nome.hashCode() + sobrenome.hashCode() ;        
    }
    
    

    @Override
    public int compareTo(Object obj) {
        Pessoa outraPessoa = (Pessoa)obj;
        String dadosCompletos = this.nome + " " + this.sobrenome + " " + this.rg;
        String outrosDadosCompletos = outraPessoa.getNome() + " " + outraPessoa.getSobrenome()
                + " " + outraPessoa.getRg();
        return dadosCompletos.compareTo(outrosDadosCompletos);
    }

    /**
     * @return the rg
     */
    public long getRg() {
        return rg;
    }

    /**
     * @param rg the rg to set
     */
    public void setRg(long rg) {
        this.rg = rg;
    }

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the sobrenome
     */
    public String getSobrenome() {
        return sobrenome;
    }

    /**
     * @param sobrenome the sobrenome to set
     */
    public void setSobrenome(String sobrenome) {
        this.sobrenome = sobrenome;
    }

    /**
     * @return the dataNasc
     */
    public String getDataNasc() {
        return dataNasc;
    }

    /**
     * @param dataNasc the dataNasc to set
     */
    public void setDataNasc(String dataNasc) {
        this.dataNasc = dataNasc;
    }
    
}
